﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace EcoSystem
{
    public interface IOrganizationAppService : ICrudAppService<
        OrganizationDto,
        Guid,
        GetOrganizationInput,
        CreateOrUpdateOrganizationDto,
        CreateOrUpdateOrganizationDto>
    {
        /// <summary>
        /// 获取所有
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Task<List<OrganizationDto>> GetAllListAsync(GetOrganizationInput input);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Task<List<OrganizationTreeDto>> GetTreeAsync(GetOrganizationInput input);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Task AddUsersAsync(AddOrganizationUsersInputDto input);

        /// <summary>
        /// 获取机构下的用户列表
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Task<List<SystemUserDto>> GetUsersAsync(Guid id);


        /// <summary>
        /// 获取机构下的用户列表
        /// </summary>
        /// <param name="pathCode"></param>
        /// <returns></returns>
        public Task<List<SystemUserDto>> GetUsersForCodeAsync(string pathCode);

        /// <summary>
        /// 获取指定用户挂接的部门信息列表
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public Task<List<UserDepartmentDto>> GetUserDepartmentsAsync(Guid userId);

    }
}
